// 监听来自popup的消息
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === 'takeScreenshot') {
    takeScreenshot(request.tabId)
      .then(result => {
        sendResponse(result);
      })
      .catch(error => {
        console.error('截屏错误:', error);
        sendResponse({ success: false, error: error.message });
      });
    
    // 返回true表示异步响应
    return true;
  }
});

// 截屏函数
async function takeScreenshot(tabId) {
  try {
    // 使用chrome.tabs.captureVisibleTab截取当前可见区域
    const dataUrl = await chrome.tabs.captureVisibleTab(null, {
      format: 'png',
      quality: 100
    });
    
    if (!dataUrl) {
      throw new Error('无法获取截屏数据');
    }
    
    // 获取当前标签页信息用于文件名
    const tab = await chrome.tabs.get(tabId);
    const url = new URL(tab.url);
    const domain = url.hostname;
    const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
    const filename = `screenshot_${domain}_${timestamp}.png`;
    
    // 直接使用data URL下载，不需要转换为Blob
    await chrome.downloads.download({
      url: dataUrl,
      filename: filename,
      saveAs: false
    });
    
    return {
      success: true,
      filename: filename
    };
    
  } catch (error) {
    console.error('截屏过程中出错:', error);
    throw error;
  }
}

// 监听下载完成事件
chrome.downloads.onChanged.addListener((downloadDelta) => {
  if (downloadDelta.state && downloadDelta.state.current === 'complete') {
    console.log('截屏文件下载完成');
  }
});